package com.ayz.gateway.center.domain.repository;



import com.ayz.gateway.common.constants.ApiData;
import com.ayz.gateway.common.constants.ApplicationConfigWrapper;

import java.util.List;

/**
 * @ClassName IApiRepository
 * @Description TODO: ApiData的存储模块
 * @Author 快乐的星球
 * @Date 2023/5/12 23:11
 * @Version 1.0
 **/
public interface IApiRepository {
    /**
     * 存储一条APIData元数据
     * @param apiData
     */
    public void addApiData(ApiData apiData);

    /**
     * 获取存储中心存储的所有ApiData元数据信息
     * @return
     */
    public List<ApiData> getApiDataList();

    /**
     * 微服务的注册
     * @param address ip地址:port端口号
     * @param applicationName 微服务的名称
     * @param configWrapper   微服务向网关导出的配置信息
     * @param gatewayGroup 网关组的名称
     */
    public void registerApplication(String address,
                                    String applicationName,
                                    ApplicationConfigWrapper configWrapper,
                                    String gatewayGroup);

    /**
     * 定时任务扫描定期剔除那些不活跃的节点
     * @param applicationChannelExpiredTime
     */
    public void scanNotActiveApplication(long applicationChannelExpiredTime);

    /**
     * 根据网关业务组名称获取网关业务组下所有的ApiData信息
     * @param gatewayGroup
     * @return
     */
    public List<ApiData> getApiDataListByGroup(String gatewayGroup);
}
